#include "phase.h"

uint8_t phase = 0;

void Phase_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    GPIO_InitConfig(GPIOA, GPIO_Pin_5|GPIO_Pin_6, GPIO_Mode_Out_PP, GPIO_Speed_50MHz);
    GPIO_InitConfig(GPIOB, GPIO_Pin_0|GPIO_Pin_1, GPIO_Mode_Out_PP, GPIO_Speed_50MHz);
    
    //开启串行使能
    PHA_PS_HIGH;
}

void Phase_Write(uint8_t data)
{
    uint8_t i;
    
    PHA_CLK_LOW;
    PHA_LE_LOW;
    
    //记录发送的数据
    phase = data;
    //高位先行
    data <<= 2;
    
    for(i=0; i<6; i++)
    {
        if(data & 0x80)
            PHA_DATA_HIGH;
        else
            PHA_DATA_LOW;
        
        data <<= 1;
        delay_us(1);
        PHA_CLK_HIGH;
        
        delay_us(1);
        PHA_CLK_LOW;
    }
    delay_us(1);
    PHA_LE_HIGH;
    delay_us(1);
}

void Phase_AddSub(uint8_t level)
{
    if(phase)
    {
        if(level)
            Phase_Write(phase + 1);
        else
            Phase_Write(phase - 1);
    }
}
